1
Introdução a Agentes de Resolução de Problemas
PolyU COMP5511Aula 2
00:00

Do Reflexo ao Planejamento

Na evolução do design de agentes, passamos de Agentes de Reflexo, que mapeiam percepções diretamente para ações com base em regras simples (por exemplo, “Se o carro à frente frear, inicie a frenagem”), para Agentes de Resolução de Problemas. Agentes de reflexo operam no contexto imediato, enquanto agentes de resolução de problemas são Baseados em objetivos. Eles consideram as consequências futuras de suas ações para encontrar uma sequência que satisfaça um objetivo específico.

  • Agente de Reflexo: $Action = Função(Percepção)$
  • Agente de Planejamento: $Sequência\_de\_Ações = Busca(Estado, Objetivo)$

A Representação de Estado Atômico

Neste nível fundamental, os agentes utilizam uma Representação Atômica. Isso significa que o estado do mundo é tratado como uma caixa preta — um nó singular sem estrutura interna visível para o algoritmo de busca. O agente raciocina apenas sobre:

  • Estados ($S$): Capturas do ambiente.
  • Ações ($A$): Transições entre estados.
  • Teste de Objetivo: Uma verificação booleana se o estado $s \in S_{objetivo}$.

O Ciclo de Resolução de Problemas

Um agente de resolução de problemas segue um ciclo distinto de quatro etapas para navegar pelo ambiente:

  1. Formulação do Objetivo: Decidir qual objetivo perseguir com base na situação atual.
  2. Formulação do Problema: Abstraindo o mundo real em um modelo matemático (Estados e Ações).
  3. Busca: Simulando sequências de ações para encontrar o caminho ótimo.
  4. Execução: Executando as ações encontradas durante a fase de busca sem mais deliberações (assumindo um ambiente estático).
Implementação Python (agent_types.py)
1
class ReflexAgent:
2
defact( self, percept):
3
# Mapeamento direto: Regra -> Ação
4
return regras.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__( self):
8
self.seq = [] # Sequência de ações em buffer
9
10
defact( self, percept):
11
# Se estivermos no meio da execução, continue
12
ifself.seq:
13
returnself.seq.pop( 0()
14
15
# Caso contrário, Planeje (Busca)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# A busca retorna uma lista de ações
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop( 0()